<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>C++ Web Framework: /home/herik/CPPWebFramework/CPPWebFramework/cwf/request.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">C++ Web Framework
   &#160;<span id="projectnumber">3.0</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_b2448bd9c6b97c57da490a507d179d6c.html">CPPWebFramework</a></li><li class="navelem"><a class="el" href="dir_3bacee99d34edff13677baafd8c3a47f.html">cwf</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">request.h</div>  </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> Copyright 2017 Herik Lima de Castro and Marcelo Medeiros Eler</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> Distributed under MIT license, or public domain if desired and</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> recognized in your jurisdiction.</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> See file LICENSE for detail.</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="preprocessor">#ifndef Request_H</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="preprocessor">#define Request_H</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;</div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="preprocessor">#include &lt;QThread&gt;</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="preprocessor">#include &lt;QTcpSocket&gt;</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="preprocessor">#include &lt;QJsonArray&gt;</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#include &lt;QJsonObject&gt;</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="preprocessor">#include &lt;QJsonDocument&gt;</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &quot;httpparser.h&quot;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &quot;session.h&quot;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &quot;filemanager.h&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &quot;configuration.h&quot;</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &quot;requestdispatcher.h&quot;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &quot;cppwebframework_global.h&quot;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;CWF_BEGIN_NAMESPACE</div><div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="class_request.html">   27</a></span>&#160;<span class="keyword">class </span>CPPWEBFRAMEWORKSHARED_EXPORT <a class="code" href="class_request.html">Request</a></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;{</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_http_read_request.html">HttpReadRequest</a>;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;    <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="class_request_dispatcher.html">RequestDispatcher</a>;</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;    QTcpSocket         *socket;</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;    <a class="code" href="class_session.html">Session</a>            *session            = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;    <a class="code" href="class_http_parser.html">HttpParser</a>         *httpParser         = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;    <a class="code" href="class_request_dispatcher.html">RequestDispatcher</a>  *requestDispatcher  = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;    <a class="code" href="class_response.html">Response</a>           *response           = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;    QMap&lt;QString, QObject *&gt; attributes;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;    <a class="code" href="class_q_map_thread_safety.html">QMapThreadSafety&lt;QString, Session *&gt;</a> &amp;sessions;</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;    <span class="keyword">const</span> <a class="code" href="class_configuration.html">Configuration</a> &amp;configuration;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;    <span class="keyword">explicit</span> <a class="code" href="class_request.html">Request</a>(QTcpSocket &amp;socket, <a class="code" href="class_q_map_thread_safety.html">QMapThreadSafety&lt;QString, Session *&gt;</a> &amp;sessions, <span class="keyword">const</span> <a class="code" href="class_configuration.html">Configuration</a> &amp;configuration);</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;    <span class="keyword">virtual</span> ~<a class="code" href="class_request.html">Request</a>() noexcept;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="class_request.html#ad856d106a54dffed5e478858cdaa7618">   56</a></span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_request.html#ad856d106a54dffed5e478858cdaa7618">addAttribute</a>(<span class="keyword">const</span> std::initializer_list&lt;QPair&lt;QString, QObject *&gt;&gt; &amp;value) noexcept</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;    {</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;        std::for_each(value.begin(), value.end(), [&amp;](<span class="keyword">const</span> QPair&lt;QString, QObject *&gt; &amp;v){attributes.insert(v.first, v.second);});</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;    }</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="class_request.html#afe81be45f2fffc0e4baf2830278b8c94">   65</a></span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_request.html#afe81be45f2fffc0e4baf2830278b8c94">addAttribute</a>(<span class="keyword">const</span> QString &amp;name, QObject *value) noexcept { attributes.insert(name, value); }</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="class_request.html#affe1bd704eaad1077e5577d0f8a22392">   69</a></span>&#160;    <span class="keyword">inline</span> QMap&lt;QString, QObject *&gt; <a class="code" href="class_request.html#affe1bd704eaad1077e5577d0f8a22392">getAttributes</a>() const noexcept { <span class="keywordflow">return</span> attributes; }</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="class_request.html#ab4d1136eebec4011c5512f77dd5e00a2">   73</a></span>&#160;    <span class="keyword">inline</span> <span class="keyword">const</span> QObject *<a class="code" href="class_request.html#ab4d1136eebec4011c5512f77dd5e00a2">getAttribute</a>(<span class="keyword">const</span> QString &amp;name) <span class="keyword">const</span> noexcept { <span class="keywordflow">return</span> attributes.contains(name) ? attributes[name] : <span class="keyword">nullptr</span>; }</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="class_request.html#a284909aadbbfd8f76472f8ebaf4ef16e">   77</a></span>&#160;    <span class="keyword">inline</span> <span class="keyword">const</span> QByteArray <a class="code" href="class_request.html#a284909aadbbfd8f76472f8ebaf4ef16e">getBody</a>() const noexcept { <span class="keywordflow">return</span> httpParser-&gt;<a class="code" href="class_http_parser.html#a730d8fa411954d674f602aa385869751">getBody</a>(); }</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="class_request.html#acb4c1802fbd8cf14183c231ebb586288">   81</a></span>&#160;    <span class="keyword">inline</span> QJsonObject <a class="code" href="class_request.html#acb4c1802fbd8cf14183c231ebb586288">bodyToJsonObject</a>() const noexcept { <span class="keywordflow">return</span> QJsonDocument::fromJson(httpParser-&gt;<a class="code" href="class_http_parser.html#a730d8fa411954d674f602aa385869751">getBody</a>()).<span class="keywordtype">object</span>(); }</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="class_request.html#a933c1581ec12d55a0b307c4060d5e127">   85</a></span>&#160;    <span class="keyword">inline</span> QJsonArray <a class="code" href="class_request.html#a933c1581ec12d55a0b307c4060d5e127">bodyToJsonArray</a>() const noexcept { <span class="keywordflow">return</span> QJsonDocument::fromJson(httpParser-&gt;<a class="code" href="class_http_parser.html#a730d8fa411954d674f602aa385869751">getBody</a>()).array(); }</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;    <a class="code" href="class_request_dispatcher.html">RequestDispatcher</a> &amp;getRequestDispatcher(<span class="keyword">const</span> QString &amp;page);</div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="class_request.html#a975ffb8f0b6aa08879ffecb50d9bb289">   96</a></span>&#160;    <span class="keyword">inline</span> QByteArray <a class="code" href="class_request.html#a975ffb8f0b6aa08879ffecb50d9bb289">getProtocol</a>() const noexcept { <span class="keywordflow">return</span> httpParser != <span class="keyword">nullptr</span> ? httpParser-&gt;<a class="code" href="class_http_parser.html#a58b5506be135040e9c1c1aa84be3090a">getHttpVersion</a>() : <span class="stringliteral">&quot;&quot;</span>; }</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="class_request.html#a5d1eaaa01ab5eb0cf1a1de7a044e9fa3">  100</a></span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_request.html#a5d1eaaa01ab5eb0cf1a1de7a044e9fa3">clearAttributes</a>() noexcept { attributes.clear(); }</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="class_request.html#a526593ca8b89c6871a36fefb0f2cde1a">  105</a></span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_request.html#a526593ca8b89c6871a36fefb0f2cde1a">setHttpParser</a>(<a class="code" href="class_http_parser.html">HttpParser</a> &amp;httpParser) noexcept { this-&gt;httpParser = &amp;httpParser; }</div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="class_request.html#adeb678695298dab6ae617e87aaa4f312">  110</a></span>&#160;    <span class="keyword">inline</span> <a class="code" href="class_http_parser.html">HttpParser</a> &amp;<a class="code" href="class_request.html#adeb678695298dab6ae617e87aaa4f312">getHttpParser</a>() const noexcept { <span class="keywordflow">return</span> *httpParser; }</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="class_request.html#a48d3b2a3579011b0599e721fdb867b27">  115</a></span>&#160;    <span class="keyword">inline</span> QByteArray <a class="code" href="class_request.html#a48d3b2a3579011b0599e721fdb867b27">getRequestURL</a>() const noexcept{ <span class="keywordflow">return</span> httpParser != <span class="keyword">nullptr</span> ? httpParser-&gt;<a class="code" href="class_http_parser.html#a4fe7e2b589ec377ae0632d12c0db2109">getUrl</a>() : <span class="stringliteral">&quot;&quot;</span>; }</div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="class_request.html#aa5f623afcbe306d552a495156e3bb9c1">  120</a></span>&#160;    <span class="keyword">inline</span> QByteArray <a class="code" href="class_request.html#aa5f623afcbe306d552a495156e3bb9c1">getRequestURI</a>() const noexcept { <span class="keywordflow">return</span> httpParser != <span class="keyword">nullptr</span> ? httpParser-&gt;<a class="code" href="class_http_parser.html#a4fe7e2b589ec377ae0632d12c0db2109">getUrl</a>() : <span class="stringliteral">&quot;&quot;</span>; }</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;    <a class="code" href="class_session.html">Session</a> &amp;getSession();</div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="class_request.html#ab11b66e85291c653579fbba30bfa1a70">  129</a></span>&#160;    <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="class_request.html#ab11b66e85291c653579fbba30bfa1a70">setSession</a>(<a class="code" href="class_session.html">Session</a> &amp;session) noexcept { this-&gt;session = &amp;session; }</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="class_request.html#a0a78d7b29f1c0d96f101df866c82cef5">  136</a></span>&#160;    QByteArray <a class="code" href="class_request.html#a0a78d7b29f1c0d96f101df866c82cef5">getParameter</a>(<span class="keyword">const</span> QByteArray &amp;name) <span class="keyword">const</span> noexcept { <span class="keywordflow">return</span> httpParser-&gt;<a class="code" href="class_http_parser.html#aec19aa9b28449ed359dd0e516f24f3c4">getParameter</a>(name); }</div><div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="class_request.html#a46c49de1519d33ee2ff3cbe5a2874fc9">  142</a></span>&#160;    <span class="keyword">inline</span> QByteArrayList <a class="code" href="class_request.html#a46c49de1519d33ee2ff3cbe5a2874fc9">getParameters</a>(<span class="keyword">const</span> QByteArray &amp;name) <span class="keyword">const</span> noexcept { <span class="keywordflow">return</span> httpParser-&gt;<a class="code" href="class_http_parser.html#aa0df65d83e9bdb39a6a667d55de1b742">getParameters</a>(name); }</div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="class_request.html#a0469d7af31664f37234397ce2cc46012">  147</a></span>&#160;    <span class="keyword">inline</span> QTcpSocket &amp;<a class="code" href="class_request.html#a0469d7af31664f37234397ce2cc46012">getSocket</a>() const noexcept { <span class="keywordflow">return</span> *socket; }</div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="class_request.html#ad87c576630126d44838da46c18a90e01">  152</a></span>&#160;    <span class="keyword">inline</span> QString <a class="code" href="class_request.html#ad87c576630126d44838da46c18a90e01">getPath</a>() const noexcept { <span class="keywordflow">return</span> configuration.<a class="code" href="class_configuration.html#ae8a0a39c01183a3ffa8d5e1511a2a883">getPath</a>(); }</div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="class_request.html#a61e5ed8f40ac13d028e27fda8695dace">  157</a></span>&#160;    <span class="keyword">inline</span> QMultiMap&lt;QByteArray, QByteArray&gt; <a class="code" href="class_request.html#a61e5ed8f40ac13d028e27fda8695dace">getUploadedFiles</a>() const noexcept { <span class="keywordflow">return</span> httpParser-&gt;<a class="code" href="class_http_parser.html#abbb9bc6fdfbc6f40629d2f8033c9f17f">getUploadedFiles</a>(); }</div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;    <span class="keywordtype">void</span> fillQObject(QObject *<span class="keywordtype">object</span>);</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;</div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;    <span class="keywordtype">void</span> fillQObject(QObject *<span class="keywordtype">object</span>, <span class="keyword">const</span> QMap&lt;QByteArray, QByteArray&gt; &amp;parameters);</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;};</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;CWF_END_NAMESPACE</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;<span class="preprocessor">#endif // Request_H</span></div><div class="ttc" id="class_request_html_acb4c1802fbd8cf14183c231ebb586288"><div class="ttname"><a href="class_request.html#acb4c1802fbd8cf14183c231ebb586288">Request::bodyToJsonObject</a></div><div class="ttdeci">QJsonObject bodyToJsonObject() const noexcept</div><div class="ttdoc">Tries returns the body of the converted request to QJsonObject. </div><div class="ttdef"><b>Definition:</b> request.h:81</div></div>
<div class="ttc" id="class_request_html_a0469d7af31664f37234397ce2cc46012"><div class="ttname"><a href="class_request.html#a0469d7af31664f37234397ce2cc46012">Request::getSocket</a></div><div class="ttdeci">QTcpSocket &amp; getSocket() const noexcept</div><div class="ttdoc">This method returns a reference to the current socket. </div><div class="ttdef"><b>Definition:</b> request.h:147</div></div>
<div class="ttc" id="class_request_html_a5d1eaaa01ab5eb0cf1a1de7a044e9fa3"><div class="ttname"><a href="class_request.html#a5d1eaaa01ab5eb0cf1a1de7a044e9fa3">Request::clearAttributes</a></div><div class="ttdeci">void clearAttributes() noexcept</div><div class="ttdoc">This method will clear all the attributes. </div><div class="ttdef"><b>Definition:</b> request.h:100</div></div>
<div class="ttc" id="class_request_html_a933c1581ec12d55a0b307c4060d5e127"><div class="ttname"><a href="class_request.html#a933c1581ec12d55a0b307c4060d5e127">Request::bodyToJsonArray</a></div><div class="ttdeci">QJsonArray bodyToJsonArray() const noexcept</div><div class="ttdoc">Tries returns the body of the converted request to QJsonArray. </div><div class="ttdef"><b>Definition:</b> request.h:85</div></div>
<div class="ttc" id="class_http_parser_html_aa0df65d83e9bdb39a6a667d55de1b742"><div class="ttname"><a href="class_http_parser.html#aa0df65d83e9bdb39a6a667d55de1b742">HttpParser::getParameters</a></div><div class="ttdeci">QByteArrayList getParameters(const QByteArray &amp;name) const noexcept</div><div class="ttdoc">Returns all parameters with a specific name. </div><div class="ttdef"><b>Definition:</b> httpparser.h:100</div></div>
<div class="ttc" id="class_http_parser_html_a58b5506be135040e9c1c1aa84be3090a"><div class="ttname"><a href="class_http_parser.html#a58b5506be135040e9c1c1aa84be3090a">HttpParser::getHttpVersion</a></div><div class="ttdeci">QByteArray getHttpVersion() const noexcept</div><div class="ttdoc">Returns the HTTP version. </div><div class="ttdef"><b>Definition:</b> httpparser.h:65</div></div>
<div class="ttc" id="class_request_html_ab11b66e85291c653579fbba30bfa1a70"><div class="ttname"><a href="class_request.html#ab11b66e85291c653579fbba30bfa1a70">Request::setSession</a></div><div class="ttdeci">void setSession(Session &amp;session) noexcept</div><div class="ttdoc">This method set the user&amp;#39;s session. </div><div class="ttdef"><b>Definition:</b> request.h:129</div></div>
<div class="ttc" id="class_request_html"><div class="ttname"><a href="class_request.html">Request</a></div><div class="ttdoc">The Request class holds all information about a http request. </div><div class="ttdef"><b>Definition:</b> request.h:27</div></div>
<div class="ttc" id="class_request_html_a526593ca8b89c6871a36fefb0f2cde1a"><div class="ttname"><a href="class_request.html#a526593ca8b89c6871a36fefb0f2cde1a">Request::setHttpParser</a></div><div class="ttdeci">void setHttpParser(HttpParser &amp;httpParser) noexcept</div><div class="ttdoc">This method set the HttpParser. </div><div class="ttdef"><b>Definition:</b> request.h:105</div></div>
<div class="ttc" id="class_request_html_ad87c576630126d44838da46c18a90e01"><div class="ttname"><a href="class_request.html#ad87c576630126d44838da46c18a90e01">Request::getPath</a></div><div class="ttdeci">QString getPath() const noexcept</div><div class="ttdoc">This method returns the path. </div><div class="ttdef"><b>Definition:</b> request.h:152</div></div>
<div class="ttc" id="class_http_read_request_html"><div class="ttname"><a href="class_http_read_request.html">HttpReadRequest</a></div><div class="ttdoc">The HttpReadRequest class is created automatically by the CppWebServer and inserted   in a QThreadPoo...</div><div class="ttdef"><b>Definition:</b> httpreadrequest.h:36</div></div>
<div class="ttc" id="class_q_map_thread_safety_html"><div class="ttname"><a href="class_q_map_thread_safety.html">QMapThreadSafety</a></div><div class="ttdoc">The QMapThreadSafety class is a thread safe QMap. </div><div class="ttdef"><b>Definition:</b> qmapthreadsafety.h:23</div></div>
<div class="ttc" id="class_request_dispatcher_html"><div class="ttname"><a href="class_request_dispatcher.html">RequestDispatcher</a></div><div class="ttdoc">The RequestDispatcher class can be used to dispatch a requisition to a page. </div><div class="ttdef"><b>Definition:</b> requestdispatcher.h:20</div></div>
<div class="ttc" id="class_request_html_a975ffb8f0b6aa08879ffecb50d9bb289"><div class="ttname"><a href="class_request.html#a975ffb8f0b6aa08879ffecb50d9bb289">Request::getProtocol</a></div><div class="ttdeci">QByteArray getProtocol() const noexcept</div><div class="ttdoc">This method returns the http protocol. </div><div class="ttdef"><b>Definition:</b> request.h:96</div></div>
<div class="ttc" id="class_http_parser_html_a4fe7e2b589ec377ae0632d12c0db2109"><div class="ttname"><a href="class_http_parser.html#a4fe7e2b589ec377ae0632d12c0db2109">HttpParser::getUrl</a></div><div class="ttdeci">QByteArray getUrl() const noexcept</div><div class="ttdoc">Returns the url. </div><div class="ttdef"><b>Definition:</b> httpparser.h:85</div></div>
<div class="ttc" id="class_request_html_a61e5ed8f40ac13d028e27fda8695dace"><div class="ttname"><a href="class_request.html#a61e5ed8f40ac13d028e27fda8695dace">Request::getUploadedFiles</a></div><div class="ttdeci">QMultiMap&lt; QByteArray, QByteArray &gt; getUploadedFiles() const noexcept</div><div class="ttdoc">This method returns all the files that the user has sent. </div><div class="ttdef"><b>Definition:</b> request.h:157</div></div>
<div class="ttc" id="class_request_html_aa5f623afcbe306d552a495156e3bb9c1"><div class="ttname"><a href="class_request.html#aa5f623afcbe306d552a495156e3bb9c1">Request::getRequestURI</a></div><div class="ttdeci">QByteArray getRequestURI() const noexcept</div><div class="ttdoc">This method returns the requested url. </div><div class="ttdef"><b>Definition:</b> request.h:120</div></div>
<div class="ttc" id="class_session_html"><div class="ttname"><a href="class_session.html">Session</a></div><div class="ttdoc">The Session class holds information about a client session. </div><div class="ttdef"><b>Definition:</b> session.h:30</div></div>
<div class="ttc" id="class_request_html_affe1bd704eaad1077e5577d0f8a22392"><div class="ttname"><a href="class_request.html#affe1bd704eaad1077e5577d0f8a22392">Request::getAttributes</a></div><div class="ttdeci">QMap&lt; QString, QObject * &gt; getAttributes() const noexcept</div><div class="ttdoc">This method returns all the attributes of a HttpReadRequest. </div><div class="ttdef"><b>Definition:</b> request.h:69</div></div>
<div class="ttc" id="class_configuration_html_ae8a0a39c01183a3ffa8d5e1511a2a883"><div class="ttname"><a href="class_configuration.html#ae8a0a39c01183a3ffa8d5e1511a2a883">Configuration::getPath</a></div><div class="ttdeci">QString getPath() const noexcept</div><div class="ttdoc">Returns the path to the server&amp;#39;s folder. </div><div class="ttdef"><b>Definition:</b> configuration.h:112</div></div>
<div class="ttc" id="class_http_parser_html"><div class="ttname"><a href="class_http_parser.html">HttpParser</a></div><div class="ttdoc">The class parses a HTTP message. </div><div class="ttdef"><b>Definition:</b> httpparser.h:21</div></div>
<div class="ttc" id="class_request_html_a46c49de1519d33ee2ff3cbe5a2874fc9"><div class="ttname"><a href="class_request.html#a46c49de1519d33ee2ff3cbe5a2874fc9">Request::getParameters</a></div><div class="ttdeci">QByteArrayList getParameters(const QByteArray &amp;name) const noexcept</div><div class="ttdoc">This method returns the parameters from a request given an specific name. </div><div class="ttdef"><b>Definition:</b> request.h:142</div></div>
<div class="ttc" id="class_request_html_afe81be45f2fffc0e4baf2830278b8c94"><div class="ttname"><a href="class_request.html#afe81be45f2fffc0e4baf2830278b8c94">Request::addAttribute</a></div><div class="ttdeci">void addAttribute(const QString &amp;name, QObject *value) noexcept</div><div class="ttdoc">This method add an attribute that will be passed to a view page. The object can be processed within a...</div><div class="ttdef"><b>Definition:</b> request.h:65</div></div>
<div class="ttc" id="class_http_parser_html_a730d8fa411954d674f602aa385869751"><div class="ttname"><a href="class_http_parser.html#a730d8fa411954d674f602aa385869751">HttpParser::getBody</a></div><div class="ttdeci">QByteArray getBody() const noexcept</div><div class="ttdoc">Returns HTTP body message. </div><div class="ttdef"><b>Definition:</b> httpparser.h:75</div></div>
<div class="ttc" id="class_configuration_html"><div class="ttname"><a href="class_configuration.html">Configuration</a></div><div class="ttdoc">All classes of C++ Web Framework are contained within the namespace CWF. </div><div class="ttdef"><b>Definition:</b> configuration.h:24</div></div>
<div class="ttc" id="class_response_html"><div class="ttname"><a href="class_response.html">Response</a></div><div class="ttdoc">The Response class is responsable to response a Http request. </div><div class="ttdef"><b>Definition:</b> response.h:25</div></div>
<div class="ttc" id="class_http_parser_html_abbb9bc6fdfbc6f40629d2f8033c9f17f"><div class="ttname"><a href="class_http_parser.html#abbb9bc6fdfbc6f40629d2f8033c9f17f">HttpParser::getUploadedFiles</a></div><div class="ttdeci">QMultiMap&lt; QByteArray, QByteArray &gt; getUploadedFiles() const noexcept</div><div class="ttdoc">Returns all uploaded files. </div><div class="ttdef"><b>Definition:</b> httpparser.h:110</div></div>
<div class="ttc" id="class_http_parser_html_aec19aa9b28449ed359dd0e516f24f3c4"><div class="ttname"><a href="class_http_parser.html#aec19aa9b28449ed359dd0e516f24f3c4">HttpParser::getParameter</a></div><div class="ttdeci">QByteArray getParameter(const QByteArray &amp;name) const noexcept</div><div class="ttdoc">Returns a specific parameter given a name. If the parameter name does not exists, the function return...</div><div class="ttdef"><b>Definition:</b> httpparser.h:94</div></div>
<div class="ttc" id="class_request_html_ab4d1136eebec4011c5512f77dd5e00a2"><div class="ttname"><a href="class_request.html#ab4d1136eebec4011c5512f77dd5e00a2">Request::getAttribute</a></div><div class="ttdeci">const QObject * getAttribute(const QString &amp;name) const noexcept</div><div class="ttdoc">This method returns a specific object given its name. </div><div class="ttdef"><b>Definition:</b> request.h:73</div></div>
<div class="ttc" id="class_request_html_ad856d106a54dffed5e478858cdaa7618"><div class="ttname"><a href="class_request.html#ad856d106a54dffed5e478858cdaa7618">Request::addAttribute</a></div><div class="ttdeci">void addAttribute(const std::initializer_list&lt; QPair&lt; QString, QObject *&gt;&gt; &amp;value) noexcept</div><div class="ttdoc">This method add attributes that will be passed to a view page. The object can be processed within a p...</div><div class="ttdef"><b>Definition:</b> request.h:56</div></div>
<div class="ttc" id="class_request_html_a48d3b2a3579011b0599e721fdb867b27"><div class="ttname"><a href="class_request.html#a48d3b2a3579011b0599e721fdb867b27">Request::getRequestURL</a></div><div class="ttdeci">QByteArray getRequestURL() const noexcept</div><div class="ttdoc">This method returns the requested url. </div><div class="ttdef"><b>Definition:</b> request.h:115</div></div>
<div class="ttc" id="class_request_html_a284909aadbbfd8f76472f8ebaf4ef16e"><div class="ttname"><a href="class_request.html#a284909aadbbfd8f76472f8ebaf4ef16e">Request::getBody</a></div><div class="ttdeci">const QByteArray getBody() const noexcept</div><div class="ttdoc">Returns the request body. </div><div class="ttdef"><b>Definition:</b> request.h:77</div></div>
<div class="ttc" id="class_request_html_a0a78d7b29f1c0d96f101df866c82cef5"><div class="ttname"><a href="class_request.html#a0a78d7b29f1c0d96f101df866c82cef5">Request::getParameter</a></div><div class="ttdeci">QByteArray getParameter(const QByteArray &amp;name) const noexcept</div><div class="ttdoc">This method returns the most recent parameter from a request given an specific name. </div><div class="ttdef"><b>Definition:</b> request.h:136</div></div>
<div class="ttc" id="class_request_html_adeb678695298dab6ae617e87aaa4f312"><div class="ttname"><a href="class_request.html#adeb678695298dab6ae617e87aaa4f312">Request::getHttpParser</a></div><div class="ttdeci">HttpParser &amp; getHttpParser() const noexcept</div><div class="ttdoc">This method returns the HttpParser. </div><div class="ttdef"><b>Definition:</b> request.h:110</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon May 28 2018 11:09:08 for C++ Web Framework by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>
